package com.yiqi.zhiyuan.feature.home.contract;

import com.suozhang.framework.framework.BasePresenter;
import com.suozhang.framework.framework.BaseView;
import com.yiqi.zhiyuan.entity.dto.LocationDTO;
import com.yiqi.zhiyuan.entity.dto.TaskDTO;
import com.yiqi.zhiyuan.entity.vo.CarVO;
import com.yiqi.zhiyuan.entity.vo.HomeVO;
import com.yiqi.zhiyuan.entity.vo.OrderVO;

import java.util.List;

import io.reactivex.Observable;

/**
 * @ProjectName: ZhiYuan
 * @Description: java类作用描述
 * @Author: lijuwen
 * @CreateDate: 2019/3/14 10:45
 * @UpdateUser: 更新者
 * @UpdateDate: 2019/3/14 10:45
 * @UpdateRemark: 更新说明
 * @Version: 1.0
 */
public interface HomeContract {

    interface Model {


        /**
         * 首页司机数据
         *
         * @param
         * @return
         */
        Observable<HomeVO> dosSelectDriverHomeInfo();

        /**
         * 获取汽车列表
         *
         * @param
         * @return
         */
        Observable<List<CarVO>> doSelectCarList();

        /**
         * 快捷接单设置
         */

        Observable<String> doOrderQuickSetup(Integer driverId, int type);

        /**
         * 司机抢单
         */
        Observable<OrderVO> doOrder(TaskDTO taskDTO);

        /**
         * 立即前往
         */
        Observable<OrderVO> doArriveAtLocation(TaskDTO taskDTO);

        /**
         * 首页订单池数据
         */

        Observable<List<OrderVO>> doSelectMissedOrderList(LocationDTO locationDTO );
    }

    interface View extends BaseView {


        /**
         * 获取成功
         */
        void showHomeInfoSuccess(HomeVO homeVo);


        /**
         * 获取失败
         */
        void showHomeInfoError(String errorMsg);

        /**
         * 快捷接单设置成功
         */
        void showOrderQuickSetupSuccess();

        /**
         * 快捷接单设置失败
         */
        void showOrderQuickSetupError(String errorMsg);

        /**
         * 获取汽车列表成功
         */
        void showCarListSuccess(List<CarVO> homeVo);

        /**
         * 获取没数据
         */
        void showSelectCarListEmpty();

        /**
         * 获取失败
         */
        void showSelectCarListError(String errorMsg);

        /**
         * 抢单成功
         */
        void showOrderSuccess(OrderVO orderVO);
        /**
         * 抢单失败
         */
        void showOrderError();
        /**
         * 抢单失败
         */
        void showOrderError(String errorMsg);

        /**
         * 立即前往成功
         */
        void showArriveAtLocationSuccess(OrderVO orderVO);

        /**
         * 显示订单池列表数据
         * */

        /**
         * 显示订单池列表数据失败
         */
        void showMissedOrderListError(String errorMsg);

        /**
         * 显示订单池列表数据成功
         */
        void showMissedOrderListSuccess(List<OrderVO> homeVo);

        /**
         * 显示订单池列表没数据
         */
        void showMissedOrderListEmpty();

    }

    interface Presenter extends BasePresenter {

        /**
         * 首页司机数据
         *
         * @param
         */
        void selectDriverHomeInfo();

        /**
         * 首页司机汽车数据
         *
         * @param
         */
        void selectCarList();

        void orderQuickSetup(Integer driverId, int type);

        /**
         * 抢单
         * param
         */
        void order(String orderNo, int useCarType);

        /**
         * 立即前往
         * param
         */
        void arriveAtLocation(String orderNo, int useCarType);
        /**
         * 查询未接订单列表
         *
         */
        void selectMissedOrderList(double lng,double lat);

    }
}
